'************************************************ 'AD9851 DDS_settei Ver0.0.1 '2007.08.16 'JA4LAO_Tuneo.Ito 'ATmega48_20 '************************************************ Config Portd.0 = Input Config Portd.1 = Output Config Portd.2 = Input Config Portd.3 = Input Config Portd.4 = Output Config Portd.5 = Output Config Portd.6 = Output Config Portd.7 = Output Config Portc.1 = Output Config Portc.2 = Input Config Portc.3 = Input Config Portc.4 = Output Config Debounce = 3 Config Int0 = Rising Dim I As Byte Dim J As Byte Dim K As Byte Dim L As Long Dim M As Long Dim Freqdata As String * 32 Dim Isoudata As String * 8 Dim B As String * 1 Dim Freq As Long Dim F_span As Long Dim Isou As Byte Dim Fpara2 As Long Dim Fpara3 As Long Dim Frequd2 As Long Dim Dds_data(3) As Long Dim Sweep_time As Long Enable Interrupts Enable Int0 On Int0 Data_in Nosave Dds_data(1) = 0 Dds_data(2) = 1000000 Dds_data(3) = 30 Isou = 144 Isoudata = Bin(isou) '10010000 Fpara3 = 191998044 Gosub Dds_data Set Portd.7 : Waitus 10 : Reset Portd.7 : Waitus 10 'Reset Set Portd.5 : Waitus 10 : Reset Portd.5 : Waitus 10 'P=>S Set Portd.6 : Reset Portd.6 Waitus 10 For I = 1 To 40 Reset Portd.4 : Waitus 10 : Set Portd.5 : Waitus 10 : Reset Portd.5 : Waitus 10 Next I Set Portd.6 : Reset Portd.6 Main: Do Gosub Lcd_hyouji Loop End Lcd_hyouji: Gosub Data_in Frequd2 = Dds_data(1) For K = 1 To 240 'K = 1 'While K =< 240 Gosub Settei Freqdata = Bin(freq) Gosub Ddsout Set Portc.1 Waitus 10 'Reset Portc.1 'Waitus 10 Bitwait Pinc.2 , Set Waitus 10 Reset Portc.1 Frequd2 = Frequd2 + F_span 'Waitus 10 For M = 1 To Sweep_time Waitus 10 Next M ' Incr K Next K Return Ddsout: J = 32 For I = 1 To 32 B = Mid(freqdata , J , 1) Gosub Sentaku Decr J Next I For I = 1 To 8 B = Mid(isoudata , I , 1) Gosub Sentaku Next I Set Portd.6 : Reset Portd.6 Return Sentaku: Select Case B Case "1" Set Portd.4 Case Else Reset Portd.4 End Select Set Portd.5 : Reset Portd.5 Return Settei: L = 0 Fpara2 = Frequd2 For I = 0 To 31 L = L * 2 Fpara2 = Fpara2 * 2 If Fpara2 >= Fpara3 Then Fpara2 = Fpara2 - Fpara3 L = L + 1 End If Next I Freq = L Return Data_in: Set Portc.4 Set Portc.3 For I = 1 To 3 Bitwait Pind.3 , Set Shiftin Pind.0 , Pind.1 , Dds_data(i) , 1 , 32 , 50 Bitwait Pind.3 , Reset Next I Reset Portc.3 Reset Portc.4 Gosub Dds_data 'Set Portc.3 'Waitus 10 'Reset Portc.3 'Goto Main 'K = 1 Return Dds_data: Dds_data(1) = Dds_data(1) * 1000 Dds_data(1) = Dds_data(1) + 1050000000 Dds_data(1) = Dds_data(1) / 250 Dds_data(2) = Dds_data(2) * 1000 Dds_data(2) = Dds_data(2) + 1050000000 Dds_data(2) = Dds_data(2) / 250 F_span = Dds_data(2) - dds_data(1) F_span = F_span / 240 Sweep_time = Dds_data(3) 'F_span = Dds_data(2) - dds_data(1) 'F_span = F_span / 240 'Sweep_time = Dds_data(3) Return